<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>函数</title>
<script>
window.onload = function () {
    /**
     * 函数
     */

    // 声明函数
    function f1() {
        console.log('fn1');
    }

    // 表达式声明函数
    var fn2 = function () {
        console.log('fn2');
    };

    var obj = {
        fun:function () {
            console.log("Fun");
        }
    };

    /**
     * 让一个函数执行的方法
     */

    // 直接调用
    f1();
    fn2();

    // 对象调用
    obj.fun();
    // new调用
    new f1();

    // 让函数成为对象的临时方法，然后调用
    fn2.call(obj);
    fn2.apply(obj);

    
    // 函数是特殊的对象，类型对象
    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    // 根据类型对象创建的实例对象，当new一个函数，函数就被认为是构造函数
    var p = new Person(1, 2);

    console.log(p.age);
};


</script>
</head>
<body>

</body>
</html>
